#include <bits/stdc++.h>
using namespace std;

/**
 * 比较两个没有前导零的十进制字符串 a 和 b，判断是否 a ≤ b
 * 前提：a 和 b 均代表非负整数，且不含前导零（除非数字就是 "0"）。
 */
bool leq(const string &a, const string &b) {
    if (a.size() != b.size())
        return a.size() < b.size();
    return a <= b; // 字典序比较
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    string s;
    cin >> s;

    // 1) 先拆出符号，再提取无前导零的数字部分
    int sign = 1; // +1 表示非负，-1 表示负数
    if (!s.empty() && s[0] == '-') {
        sign = -1;
        s.erase(s.begin());
    }
    // 去掉数字部分的前导零
    int idx = 0;
    while (idx < (int)s.size() && s[idx] == '0') {
        idx++;
    }
    s = s.substr(idx);
    if (s.empty()) {
        // 原来可能是 "-0" 或 "0000" 之类，算作 "0"
        s = "0";
        sign = 1;
    }

    // 现在 s 是一个没有前导零的非负整数的字符串
    // sign == -1 表示原来是负数（且数值为 s）
    // sign == +1 表示原来是非负数

    // 2) 各类型的边界 (字符串形式，已经去掉前导零)
    const string INT_POS_MAX_STR  = "2147483647";             //  2^31 - 1
    const string INT_NEG_MAX_STR  = "2147483648";             // -2^31 的绝对值
    const string UINT_MAX_STR     = "4294967295";             //  2^32 - 1

    const string LL_POS_MAX_STR   = "9223372036854775807";    //  2^63 - 1
    const string LL_NEG_MAX_STR   = "9223372036854775808";    // -2^63 的绝对值
    const string ULL_MAX_STR      = "18446744073709551615";   //  2^64 - 1

    bool okInt = false, okUInt = false;
    bool okLL = false, okULL = false;

    // 3) 判断 int
    if (sign > 0) {
        // 非负，要 ≤ INT_POS_MAX_STR
        if (leq(s, INT_POS_MAX_STR)) {
            okInt = true;
        }
    } else {
        // 负数，要绝对值 ≤ INT_NEG_MAX_STR
        if (leq(s, INT_NEG_MAX_STR)) {
            okInt = true;
        }
    }

    // 4) 判断 unsigned int
    if (sign > 0) {
        // 只有非负才能存到 unsigned int，且要 ≤ UINT_MAX_STR
        if (leq(s, UINT_MAX_STR)) {
            okUInt = true;
        }
    }

    // 5) 判断 long long
    if (sign > 0) {
        if (leq(s, LL_POS_MAX_STR)) {
            okLL = true;
        }
    } else {
        if (leq(s, LL_NEG_MAX_STR)) {
            okLL = true;
        }
    }

    // 6) 判断 unsigned long long
    if (sign > 0) {
        if (leq(s, ULL_MAX_STR)) {
            okULL = true;
        }
    }

    // 7) 最后一定可以存为 string
    // 输出顺序：int, unsigned int, long long, unsigned long long, string
    if (okInt)   cout << "int\n";
    if (okUInt)  cout << "unsigned int\n";
    if (okLL)    cout << "long long\n";
    if (okULL)   cout << "unsigned long long\n";
    cout << "string\n";

    return 0;
}
